# 先导flask包
from os import name
from flask import Flask, json,request

# 导入SQLALchemy包 数据库
from flask_sqlalchemy import SQLAlchemy

# 导入配置文件
from confige import Confige

# 跨域
from flask_cors import CORS



#实例化
app=Flask(__name__)

# 配置跨域
CORS(app)

# 固定格式 
app.config.from_object(Confige)

# 实例化数据库类 SQLAlchemy是一个封装好的用来操作数据库的文件
db=SQLAlchemy(app)

# class定义表名
class Order(db.Model):
    # id 整型 主键自增  Column是固定格式
    id=db.Column(db.Integer,primary_key=True,autoincrement=True)
    # nane 字符串类型 唯一
    name=db.Column(db.String(30),unique=True)
    # 价格 浮点型 默认0
    price=db.Column(db.Float,default=0)
# 创建表
# db.create_all()

# 接口默认请求方式是get methods指定请求方式 可以指定多个请求方式
@app.route('/shop/',methods=['POST','GET','DELETE'])
# 定义方法名 
def shop():
    # 添加
    if request.method=='POST':
        # 接收前端传来的数据 data是所有信息 request.from是接收前端传来的数据
        data=json.loads(request.data) 
        # 以键值对的形式提取数据
        name=data['name']
        price=data['price']

        shop=Order(name=name,price=price)
        try:
            # 数据库添加
            db.session.add(shop)
            # 数据库提交
            db.session.commit()
            return{'code':200}
        except:
            return{'code':10010}

    
    # 获取
    elif request.method=='GET':
        # 获取表所有信息
        shop=Order.query.all()
        # 定义一个空列表
        list=[]
        # 循环这个列表
        for i in shop:
            # 定义一个空字典
            dict1={}
            # 以字典键值对的形式 输入键提取值
            dict1['name']=i.name   # 获取name
            dict1['price']=i.price # 获取价格
            dict1['id']=i.id       # 获取id
            list.append(dict1)     # 将获取到的信息添加到列表里
        return {'code':200,'list':list}


    # 删除
    else:
        # 获取id
        id=request.args.get('id')
        # 通过id过滤信息 然后用删除方法删除
        Order.query.filter_by(id=id).delete()
        # 提交
        db.session.commit()
        return {'code':200}

    
        


   

# 写入口
if __name__ == '__main__':
    app.run()